home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
iguana
/
incosrc
/
incosrc.exe
/
STARF
/
STARF.ASM
< prev
next >
Wrap
Assembly Source File
|
1993-08-14
|
28KB
|
1,201 lines
; ------------------------------ STARF.ASM ---------------------
; Starfield.
; (C) 1993 bye JCAB.
TRACE = 0
.MODEL SMALL
.STACK 400
.386
DOSSEG
LOCALS
JUMPS
SF01 SEGMENT PARA PUBLIC
EXTRN StarFont: BYTE
ENDS
INCLUDE VGASM.INC
INCLUDE VTASM.INC
INCLUDE VBLIB.INC
SCRW = 80
NStars = 600
; ------------ Cosinus table, and Sin() and Cos() neat macros. ----------
ANGLEDIVISOR = 6
ANGLEINC = 1 SHL (ANGLEDIVISOR - 3)
.DATA
CosTbl LABEL WORD
INCLUDE COSTBL.INC
Cos MACRO dest
SHR BX,ANGLEDIVISOR-1
AND BX,7FEh
MOV &dest,[CosTbl+BX]
ENDM
Sin MACRO dest
ADD BH,(1 SHL ANGLEDIVISOR)
Cos &dest
ENDM
;===================================================
;===================================================
.CODE
.STARTUP
CLD
CALL SetupStarfVideo
CALL SetRandomStars
CALL InitMusic
CALL VTDisconnectTimer
MOV BX,3
MOV AL,0
CALL VTSetSemaphore
MOV BX,4
MOV DH,15
MOV DL,1
CALL VTMiddleSync
CALL TextEffect
COMMENT #
LES SI,CS:[DVTRunInfo]
CMP ES:[SI+Semaphores+4],0
JZ @@cont
@@wlp:
CALL CallMusic
LES SI,CS:[DVTRunInfo]
CMP ES:[SI+Semaphores+5],0
JE @@wlp
JMP @@cont1
@@cont:
MOV AH,16
MOV AL,1
CALL VTJumpPos
@@cont1:
#
MOV CS:[VBLFullHandler],OFFSET StarsFullHandler
XOR SI,SI
CALL InitializeTimerVBL
CALL VBLVSync
MainLoop:
MOV CX,4000
; LOOP $
SetBorder 0, 0, 0
; WaitForDisplay
CALL VBLVSync
MOV [NFrames],AX
CALL SetDisplayPage
; VSync
INC [LoopCounter]
INC [FrameCounter]
CMP [FrameCounter],3
JC @@1
MOV [FrameCounter],0
@@1:
MOV CX,4000
; LOOP $
SetBorder 63,63,63
MOV [Bailed],1
MOV CX,[NFrames]
@@mlp:
PUSH CX
CALL AdvanceStars
POP CX
LOOP @@mlp
CALL CalcRotateTable
SetBorder 0, 0, 63
CALL ErasePoints
SetBorder 63,63,0
CALL CallMusic
SetBorder 0, 63, 0
MOV CX,[NFrames]
@@mlp1:
PUSH CX
CALL OndullateTunnel
POP CX
LOOP @@mlp1
CALL ProjectPerspective
SetBorder 63,63,0
CALL CallMusic
SetBorder 0, 63,63
CALL DumpPoints
SetBorder 63,63,0
CALL CallMusic
MOV BX,2
MOV AL,0
CALL VTCheckSemaphore
JZ @@cjc1
MOV [Bailing],1
@@cjc1:
CMP [Bailed],0
JNZ ByeBye
MOV AH,1
INT 16h
JNZ @@Bye
JMP MainLoop
@@Bye:
XOR AX,AX
INT 16h
ByeBye:
CALL EndTimerVBL
CALL VTConnectTimer
MOV DX,3C4h ; Bitmask...
MOV AX,0F02h ; All planes
OUT DX,AX
MOV DX,3CEh ; Bitmask...
MOV AX,0FF08h ; 11111111b
OUT DX,AX
XOR DI,DI ; Clear the screen. All planes.
MOV AX,0A000h
MOV ES,AX
XOR AX,AX
MOV CX,8000h
REP STOSW
; CALL ZeroPalette
; MOV AX,3
; INT 10h
CALL RestoreSystemTime
MOV AX,4C00h
INT 21h
; =======================================
StarsFullHandler:
PUSH DS
PUSH BX
MOV AX,@data
MOV DS,AX
; CALL SetDisplayPage
POP BX
POP DS
RET
; =======================================
SetupStarfVideo:
COMMENT #
CALL ZeroPalette
MOV AX,13h
INT 10h
CALL ZeroPalette
VSync
MOV DX,3C0h
MOV AL,30h
OUT DX,AL
MOV AL,01100001b
OUT DX,AL
MOV DX,3c4h
MOV AX,604h ; "Unchain my heart". And my VGA...
OUT DX,AX
MOV AX,0F02h ; All planes
OUT DX,AX
; Comienzo del modo de Hz reducidos.
MOV DX,3D4h
MOV CX,18h
MOV SI,OFFSET CRTCregs
@@cl1:
LODSW
; OUT DX,AX
LOOP @@cl1
; Final del modo de Hz reducidos.
MOV AX,14h ; Disable dword mode
OUT DX,AX
MOV AX,0E317h ; Enable byte mode.
OUT DX,AX
#
MOV DX,3C4h ; Bitmask...
MOV AX,0F02h ; All planes
OUT DX,AX
MOV DX,3CEh ; Bitmask...
MOV AX,0FF08h ; 11111111b
OUT DX,AX
XOR DI,DI ; Clear the screen. All planes.
MOV AX,0A000h
MOV ES,AX
XOR AX,AX
MOV CX,8000h
REP STOSW
MOV SI,OFFSET NormalPalette
MOV CX,256
XOR AL,AL
CALL DumpPalette
PUSH DS
MOV AX,SF01
MOV DS,AX
MOV AX,0A000h
MOV ES,AX
MOV SI,OFFSET StarFont
MOV BX,104h
@@lp0:
MOV DX,3C4h
MOV AL,02h ; One plane at a time.
MOV AH,BH
OUT DX,AX
MOV DI,3*SCRW*200
PUSH SI
DumpPartialText MACRO b
LOCAL @@lp1
MOV CX,64000/4/SCRW/4
@@lp1:
REPT SCRW
LODSB
OR AL,b
STOSB
ADD SI,3
ENDM
LOOP @@lp1
ENDM
DumpPartialText 11100000b
DumpPartialText 11101000b
DumpPartialText 11110000b
DumpPartialText 11111000b
POP SI
INC SI
SHL BH,1
DEC BL
JNZ @@lp0
POP DS
MOV BX,3*200*SCRW
MOV DX,3D4h
MOV AL,0Ch
MOV AH,BH
OUT DX,AX
INC AL
MOV AH,BL
OUT DX,AX
RET
; =======================================
SetDisplayPage:
MOV DX,3D4h
MOV BX,SCRW*200*2
TEST [FrameCounter],2
JNZ SHORT @@scrst
MOV BX,SCRW*200*1
TEST [FrameCounter],1
JNZ SHORT @@scrst
MOV BX,SCRW*200*0
@@scrst:
MOV AL,0Ch
MOV AH,BH
OUT DX,AX
INC AL
MOV AH,BL
OUT DX,AX
RET
; =======================================
GetRandomNumber:
MOV AX,[RandSeed]
MOV BX,[RandSeed2]
MOV BP,[RandSeed3]
ADD AX,0a137h
ADD BX,63f7h
ADD BP,784Ah
ROL AX,2
MOV [RandSeed],AX
ADD BX,AX
ROR BX,1
MOV [RandSeed2],BX
SUB BP,BX
XOR AX,BP
MOV [RandSeed3],BP
ADD AX,BX
RET
; =======================================
SetRandomStars:
PUSH DS
POP ES
MOV DI,OFFSET StarsPos
MOV CX,NStars
@@lp:
COMMENT #
CALL GetRandomNumber
PUSH AX
MOV BX,AX
Cos AX
SAR AX,2
STOSW
POP BX
Sin AX
SAR AX,2
STOSW
#
CALL GetRandomNumber
STOSW
CALL GetRandomNumber
STOSW
CALL GetRandomNumber
AND AX,7FFFh
STOSW
LOOP @@lp
MOV [StarsScr10],0FFFFh
MOV [StarsScr11],0FFFFh
MOV [StarsScr12],0FFFFh
MOV [StarsScr13],0FFFFh
MOV [StarsScr20],0FFFFh
MOV [StarsScr21],0FFFFh
MOV [StarsScr22],0FFFFh
MOV [StarsScr23],0FFFFh
MOV [StarsScr30],0FFFFh
MOV [StarsScr31],0FFFFh
MOV [StarsScr32],0FFFFh
MOV [StarsScr33],0FFFFh
RET
; =======================================
ProjectPerspective:
PUSH DS
POP ES
TEST [FrameCounter],2
JZ @@frame2
MOV [DumpSize0],OFFSET StarsScr10
MOV [DumpSize1],OFFSET StarsScr11
MOV [DumpSize2],OFFSET StarsScr12
MOV [DumpSize3],OFFSET StarsScr13
MOV BP,SCRW*200*2
JMP SHORT @@endframe
@@frame2:
TEST [FrameCounter],1
JZ @@frame3
MOV [DumpSize0],OFFSET StarsScr20
MOV [DumpSize1],OFFSET StarsScr21
MOV [DumpSize2],OFFSET StarsScr22
MOV [DumpSize3],OFFSET StarsScr23
MOV BP,SCRW*200*1
JMP SHORT @@endframe
@@frame3:
MOV [DumpSize0],OFFSET StarsScr30
MOV [DumpSize1],OFFSET StarsScr31
MOV [DumpSize2],OFFSET StarsScr32
MOV [DumpSize3],OFFSET StarsScr33
MOV BP,SCRW*200*0
@@endframe:
MOV CX,NStars
MOV SI,OFFSET StarsPos
@@lp:
MOV AX,[SI+4]
CMP AX,100
JL @@notinscr
MOV BX,96
MOV AX,[SI+2]
SUB AX,[CurrentDisplacementY]
IMUL BX
IDIV WORD PTR [SI+4]
ADD AX,189
CMP AX,189*2
JNC @@notinscr
MOV DI,AX
MOV AX,[SI]
SUB AX,[CurrentDisplacementX]
IMUL BX
IDIV WORD PTR [SI+4]
ADD AX,189
CMP AX,189*2
JNC @@notinscr
;COMMENT #
ADD AX,AX
ADD DI,DI
PUSH DI
PUSH AX
MOV DX,RotAngleTableCos[DI]
MOV DI,AX
ADD DX,RotAngleTableSin[DI]
POP DI
POP AX
;#
;SUB DI,189
;SUB AX,189
;MOV DX,DI
ADD DX,100
CMP DX,200
JNC @@notinscr
;COMMENT #
PUSH DX
MOV DX,RotAngleTableCos[DI]
MOV DI,AX
SUB DX,RotAngleTableSin[DI]
POP DI
;#
;MOV DI,DX
;MOV DX,AX
ADD DX,160
CMP DX,320
JNC @@notinscr
ADD DI,DI
MOV AX,ScrOffsets[DI]
MOV BL,DL
SHR DX,2
ADD AX,DX
ADD AX,BP
XOR BH,BH
AND BL,3
ADD BX,BX
MOV DI,DumpSize0[BX]
STOSW
MOV AL,[SI+5]
SHR AL,1
SUB AL,63
NEG AL
STOSB
MOV DumpSize0[BX],DI
MOV [Bailed],0
@@next:
ADD SI,6
LOOP @@lp
MOV AX,0FFFFh
MOV DI,[DumpSize0]
STOSW
MOV DI,[DumpSize1]
STOSW
MOV DI,[DumpSize2]
STOSW
MOV DI,[DumpSize3]
STOSW
RET
@@notinscr:
CMP [Bailing],0
JZ @@generate
MOV BX,0
MOV AX,0
MOV WORD PTR [SI],800h
MOV WORD PTR [SI+2],800h
MOV WORD PTR [SI+4],1
JMP @@next
@@generate:
PUSH BP
CALL WORD PTR [ModeGenerator]
POP BP
MOV [SI],BX
MOV [SI+2],AX
MOV AX,[ZSpeed]
OR WORD PTR [SI+4],7E00h
JMP SHORT @@next
; =======================================
DumpPlane MACRO p
LOCAL @@f2, @@f3, @@ef, @@lp, @@end
MOV AX,(1 SHL p)*256+2
OUT DX,AX
TEST [FrameCounter],2
JZ @@f2
MOV SI,OFFSET StarsScr1&p
JMP @@ef
@@f2:
TEST [FrameCounter],1
JZ @@f3
MOV SI,OFFSET StarsScr2&p
JMP @@ef
@@f3:
MOV SI,OFFSET StarsScr3&p
@@ef:
@@lp:
LODSW
MOV BX,AX
INC AX
JZ @@end
LODSB
MOV BYTE PTR ES:[BX],AL
JMP SHORT @@lp
@@end:
ENDM
DumpPoints:
MOV AX,0A000h
MOV ES,AX
MOV DX,3C4h
DumpPlane %0
DumpPlane %1
DumpPlane %2
DumpPlane %3
RET
; =======================================
ErasePlane MACRO p
LOCAL @@f2, @@f3, @@ef, @@lp, @@end
TEST [FrameCounter],2
JZ @@f2
MOV SI,OFFSET StarsScr1&p
JMP @@ef
@@f2:
TEST [FrameCounter],1
JZ @@f3
MOV SI,OFFSET StarsScr2&p
JMP @@ef
@@f3:
MOV SI,OFFSET StarsScr3&p
@@ef:
XOR DL,DL
@@lp:
LODSW
MOV BX,AX
INC AX
JZ @@end
INC SI
MOV BYTE PTR ES:[BX],DL
JMP SHORT @@lp
@@end:
ENDM
ErasePoints:
MOV AX,0A000h
MOV ES,AX
MOV DX,3C4h
MOV AX,0F02h
OUT DX,AX
ErasePlane %0
ErasePlane %1
ErasePlane %2
ErasePlane %3
RET
; =======================================
AdvanceStars:
MOV AX,[ZSpeed]
ADD AX,[ZIncrement]
CMP AX,512
JNC @@0
MOV [ZSpeed],AX
@@0:
MOV SI,OFFSET StarsPos+4
MOV CX,NStars/10
MOV AX,[ZSpeed]
MOV BX,6
@@lp:
REPT 10
SUB WORD PTR [SI],AX
ADD SI,BX
ENDM
LOOP @@lp
; Now, for some scripting & sequencing...
CALL DoModeScripting
CALL PerformSpin
RET
; =======================================
DoModeScripting:
DEC [ModeCounter]
JNZ @@ret
CMP [ModeGenerator],OFFSET GeneratorHyper
JZ @@chghyper
CMP [ModeGenerator],OFFSET GeneratorCircular
JZ @@chgcirc
CMP [ModeGenerator],OFFSET GeneratorTwin
JZ @@chgtwin
CMP [ModeGenerator],OFFSET GeneratorPlane
JZ @@chgplane
CMP [ModeGenerator],OFFSET GeneratorFloor
JZ @@chgfloor
@@chgrandom:
CMP [ZIncrement],-1
JNZ @@enterc
MOV [ZIncrement],1
MOV [ModeCounter],700
JMP SHORT @@ret
@@enterc:
MOV [ModeCounter],256
MOV [ModeGenerator],OFFSET GeneratorHyper
JMP SHORT @@ret
@@chgplane:
MOV [ModeCounter],25600
MOV [ModeGenerator],OFFSET GeneratorRandom
JMP SHORT @@ret
@@chghyper:
MOV [ModeCounter],2048
MOV [ModeGenerator],OFFSET GeneratorCircular
MOV [HorizontalCenterX],0
MOV [DisplacementPosX],0
JMP SHORT @@ret
@@chgfloor:
MOV [ModeCounter],700
MOV [ModeGenerator],OFFSET GeneratorPlane
; MOV [ZIncrement],-1
JMP SHORT @@ret
@@chgtwin:
MOV [ModeCounter],2048
MOV [ModeGenerator],OFFSET GeneratorFloor
MOV [HorizontalCenterX],0
MOV [DisplacementPosX],0
JMP SHORT @@ret
@@chgcirc:
MOV [ModeCounter],1024
MOV [ModeGenerator],OFFSET GeneratorTwin
@@ret:
RET
; =======================================
; Star generators, control the whole motion of
; the spaceflight. Return new X in BX, new Y in AX.
; They will probably modify those vars at the end.
GeneratorRandom:
CALL GetRandomNumber
PUSH AX
CALL GetRandomNumber
POP BX
RET
; =======================================
GeneratorPlane:
CALL GetRandomNumber
PUSH AX
CALL GetRandomNumber
AND AX,3FFh
ADD AX,1000h
POP BX
RET
; =======================================
GeneratorTwin:
PUSH DX
PUSH CX
@@otraX:
CALL GetRandomNumber
ADD AX,32600
CMP AX,65200
JNC @@otraX
SUB AX,32600
PUSH AX
CALL GetRandomNumber
POP CX
PUSH AX
; X' = X*Cos(a) - Y*Sin(a)
; Y' = X*Sin(a) + Y*Cos(a)
MOV BX,[TwinAngle]
Cos AX
IMUL CX
ADD DX,DX
PUSH DX
MOV BX,[TwinAngle]
Sin AX
IMUL CX
ADD DX,DX
POP AX ; DX = Y', AX = X'
POP CX
;COMMENT #
AND CX,1
JZ @@up
ADD DX,[YCosA]
SUB AX,[YSinA]
JMP @@nx
@@up:
SUB DX,[YCosA]
ADD AX,[YSinA]
@@nx:
;#
MOV BX,AX
MOV AX,DX
POP CX
POP DX
RET
; =======================================
GeneratorFloor:
PUSH DX
CALL GetRandomNumber
PUSH AX
MOV BX,AX
SAL BX,1
Cos BP
MOV BX,[ModeCounter]
SHL BX,10
Sin AX
IMUL BP
MOV AX,DX
SAR AX,2
ADD AX,1800h
COMMENT #
CALL GetRandomNumber
AND AX,3FFh
SUB AX,1000h
NEG AX
#
ADD AX,[HorizontalCenterY]
POP BX
POP DX
RET
; =======================================
GeneratorCircular:
CALL GetRandomNumber
PUSH AX
MOV BX,AX
Cos AX
SAR AX,3
ADD AX,[HorizontalCenterX]
POP BX
PUSH AX
Sin AX
SAR AX,3
ADD AX,[HorizontalCenterY]
POP BX
RET
; =======================================
GeneratorHyper:
INC [HyperCounter]
TEST [HyperCounter],31
JNZ @@getst
CALL GetRandomNumber
SAR AX,2
MOV BX,AX
AND BX,3
ADD BX,BX
MOV [HyperPosX+BX],AX
PUSH BX
CALL GetRandomNumber
SAR AX,2
POP BX
MOV [HyperPosY+BX],AX
@@getst:
MOV BX,[HyperCounter]
AND BX,3
ADD BX,BX
MOV AX,[HyperPosY+BX]
MOV BX,[HyperPosX+BX]
RET
; =======================================
OndullateTunnel:
CMP [ModeGenerator],OFFSET GeneratorCircular
JZ @@doitspinn
CMP [ModeGenerator],OFFSET GeneratorFloor
JZ @@doit
RET
@@doitspinn:
CMP [ModeCounter],512+128
JC @@doit
CMP [ModeCounter],2048-512-128
JNC @@doit
SUB [RotXYAngle],128
@@doit:
MOV BX,[ModeCounter]
SHL BX,2
ADD BX,OFFSET TunnelTable-4
MOV AX,[BX]
MOV [HorizontalCenterX],AX
MOV AX,[BX+2]
MOV [HorizontalCenterY],AX
ADD BX,64*4
MOV AX,[BX]
MOV [CurrentDisplacementX],AX
MOV AX,[BX+2]
MOV [CurrentDisplacementY],AX
RET
; =======================================
PerformSpin:
CMP [ModeGenerator],OFFSET GeneratorTwin
JZ @@doit
RET
@@doit:
CMP [ModeCounter],768
JC @@goon
SUB [RotXYAngle],128
@@goon:
ADD [TwinAngle],128
MOV BX,[TwinAngle]
Cos AX
MOV BX,1000h
IMUL BX
ADD DX,DX
MOV [YCosA],DX
MOV BX,[TwinAngle]
Sin AX
MOV BX,1000h
IMUL BX
ADD DX,DX
MOV [YSinA],DX
RET
; =======================================
CalcRotateTable:
MOV SI,[RotXYAngle]
MOV CX,189
MOV DI,OFFSET RotAngleTableSin
@@lp:
PUSH CX
ADD CX,CX
ADD CX,1
MOV BX,SI
Sin AX
IMUL CX
MOV BP,DX
MOV BX,SI
Cos AX
IMUL CX
MOV [DI],BP
MOV [DI+379*2],DX
MOV BX,OFFSET RotAngleTableSin + 378*2
SUB BX,DI
ADD BX,OFFSET RotAngleTableSin
NEG DX
NEG BP
MOV [BX],BP
MOV [BX+379*2],DX
ADD DI,2
POP CX
LOOP @@lp
MOV [RotAngleTableSin+189*2],0
MOV [RotAngleTableCos+189*2],0
RET
; =======================================
TextEffect:
MOV SI,OFFSET FontPalette
MOV AL,11100001b
MOV CX,5
CALL DumpPalette
@@l1:
CALL CallMusic
MOV BX,43h
MOV AL,0
CALL VTCheckSemaphore
JZ @@l1
MOV SI,OFFSET FontPalette
MOV AL,11101001b
MOV CX,5
CALL DumpPalette
@@l2:
CALL CallMusic
MOV BX,44h
MOV AL,0
CALL VTCheckSemaphore
JZ @@l2
MOV SI,OFFSET FontPalette
MOV AL,11110001b
MOV CX,5
CALL DumpPalette
@@l3:
CALL CallMusic
MOV BX,45h
MOV AL,0
CALL VTCheckSemaphore
JZ @@l3
MOV SI,OFFSET FontPalette
MOV AL,11111001b
MOV CX,5
CALL DumpPalette
@@l4:
CALL CallMusic
MOV BX,46h
MOV AL,0
CALL VTCheckSemaphore
JZ @@l4
RET
; =======================================
; =======================================
; =======================================
; =======================================
; =======================================
; =======================================
; =======================================
; =======================================
; =======================================
; =======================================
.DATA
CRTCregs LABEL BYTE ; Modo 13h
DB 11h, 04h ; End vertical retrace. (0-0Fh) ; DB 11h, 8Eh
DB 00h, 64h ; Horizontal total. ; DB 00h, 5Fh
DB 01h, 4Fh ; Horizontal display enable end. ; DB 01h, 4Fh
DB 02h, 50h ; Start horizontal blanking. ; DB 02h, 50h
DB 03h, 80h+07h ; End horizontal blanking. (0-1Fh) ; DB 03h, 82h
DB 04h, 5Bh ; Start horizontal retrace. ; DB 04h, 54h
DB 05h, 80h+05h ; End horizontal retrace. (0-1Fh) ; DB 05h, 80h
DB 06h,0FFh ; Vertical total. (+7.0 +7.5) ; DB 06h, BFh
DB 07h, 00011111b ; Overflow (high bits of vertical registers). ; DB 07h, 1Fh
DB 08h, 00h ; DB 08h, 00h
DB 09h, 41h ; DB 09h, 41h
DB 0Ah, 00h ; DB 0Ah, 00h
DB 0Bh, 00h ; DB 0Bh, 00h
DB 0Ch, 00h ; DB 0Ch, 00h
DB 0Dh, 00h ; DB 0Dh, 00h
DB 0Eh, 00h ; DB 0Eh, 00h
DB 0Fh, 00h ; DB 0Fh, 00h
DB 10h,0C0h ; Start vertical retrace. (+7.2 +7.7) ; DB 10h, 9Ch
;
; 11h ────┘ ; End vertical retrace. (0-0Fh)
DB 12h, 8Fh ; Vertical display enable end. (+7.1 +7.6) ; DB 12h, 8Fh
DB 13h, 28h ; DB 13h, 28h
DB 14h, 40h ; DB 14h, 40h
DB 15h,097h ; Start vertical blanking. (+7.3 +9.5) ; DB 15h, 96h
DB 16h,0F8h ; End vertical blanking. ; DB 16h, B9h
DB 17h,0A3h ; DB 17h, A3h
DB 18h,0FFh ; DB 18h, FFh
FrameCounter DW 0
RandSeed DW 348Bh
RandSeed2 DW 7F34h
RandSeed3 DW 32bfh
NormalPalette LABEL BYTE
DB 0,0,0
REPT 12
DB 12,12,12
ENDM
i = 13
REPT 63-12
DB i, i, i
i = i + 1
ENDM
DB 63, 0, 0
DB 768-($-NormalPalette) DUP(0)
FontPalette LABEL BYTE
DB 10, 20, 7
DB 17, 26, 18
DB 24, 32, 29
DB 31, 38, 41
DB 38, 44, 52
ScrOffsets LABEL WORD
i = 0
REPT 200
DW i
i = i + SCRW
ENDM
ZSpeed DW 0
ZIncrement DW 1
ModeCounter DW 700
LoopCounter DW 0
NFrames DW 0
Bailing DB 0
Bailed DB 0
ModeGenerator DW OFFSET GeneratorRandom
HorizontalCenterX DW 0
HorizontalCenterY DW 0
CurrentDisplacementX DW 0
CurrentDisplacementY DW 0
DisplacementPosX DW 0
DisplacementPosY DW 0
HyperCounter DW 0
HyperPosX DW 2345, 23456, 12035, 40657
HyperPosY DW 7547, 52567, 23344, 35435
TwinAngle DW 256
YSinA DW 1000h
YCosA DW 0
COMMENT #
TwinAngle DW 45
YSinA DW 2896
YCosA DW 2896
#
RotXYAngle DW 32768
COMMENT #
DisplacementsX DW 64 DUP (0)
DisplacementsY DW 64 DUP (0)
#
TunnelTable LABEL WORD
INCLUDE TUNNPATH.INC
DW 64*2 DUP (0)
UDATASEG
RotAngleTableSin DW 379 DUP(?)
RotAngleTableCos DW 379 DUP(?)
StarsPos DW (NStars*3) DUP(?) ; X, Y, Z coords. of the stars.
DumpSize0 DW ?
DumpSize1 DW ?
DumpSize2 DW ?
DumpSize3 DW ?
StarsScr LABEL BYTE ; Offset.W, color.B in screen.
StarsScr10 DW NStars*3/2 + 1 DUP(?) ; For each plane.
StarsScr11 DW NStars*3/2 + 1 DUP(?)
StarsScr12 DW NStars*3/2 + 1 DUP(?)
StarsScr13 DW NStars*3/2 + 1 DUP(?)
StarsScr20 DW NStars*3/2 + 1 DUP(?) ; For each plane.
StarsScr21 DW NStars*3/2 + 1 DUP(?)
StarsScr22 DW NStars*3/2 + 1 DUP(?)
StarsScr23 DW NStars*3/2 + 1 DUP(?)
StarsScr30 DW NStars*3/2 + 1 DUP(?) ; For each plane.
StarsScr31 DW NStars*3/2 + 1 DUP(?)
StarsScr32 DW NStars*3/2 + 1 DUP(?)
StarsScr33 DW NStars*3/2 + 1 DUP(?)
END
; ------------------------ End of STARF.ASM ---------------------------